AWSアカウントを作ったら最初にやるべきこと 〜2021年版〜 #devio2021
DevelopersIO 2021 Decade のセッション「AWS アカウントを作ったら最初にやるべきこと 〜2021年版〜」のブログ版です。
AWS を使い始めのときは、セキュリティやコストについて不安を抱いている方もいると思います。その不安を少しでも払拭できればという思いで作成しましたが、作成しているうちにあれもこれもと増えていき、ボリュームが多くなっています。
令和元年版 も合わせて参照していただくと理解が深まります。
2022 年 6 月の更新版を公開しました。
動画
資料
はじめに
やるべきことは資料にまとめており、本ブログは概略版となります。 資料では、設定するサービス内容の理解を助けるために、各サービスの利用画面もなるべく掲載するようにしています。
やるべきことは「ログ・モニタリング」「セキュリティ」「契約・コスト」の観点で分類しており、レベル設定もしています。 また、資料の方には参考情報として料金の有無も記載しています。
1点注意として、やるべきことのレベル設定は個人の見解となります
やるべきこと一覧
レベル設定
レベル | 説明 |
---|---|
MUST | 必須でやること |
SHOULD | 明確な理由が無い限りやるべきこと |
MAY | 条件によってやる/やらないが決まること |
INFO | 関連する役立ち情報 |
一覧表
ログ・モニタリング
サービス名 | 内容 | レベル |
---|---|---|
AWS CloudTrail | 有効化(証跡の作成) | MUST |
CloudTrail Insights の有効化 | SHOULD | |
Athena のテーブル作成 | MAY | |
Amazon EventBridge | マネジメントコンソールのサインイン通知 | SHOULD |
AWS Config | 有効化(レコーダーの作成) | MUST |
Config ルールの作成 | SHOULD | |
Amazon DevOps Guru | 有効化 | SHOULD |
Amazon S3 Storage Lens | 有効化(ダッシュボードの作成) | SHOULD |
AWS Personal Health Dashboard | 通知設定 | SHOULD |
AWS Trusted Advisor | 通知設定 | SHOULD |
セキュリティ
サービス名 | 内容 | レベル |
---|---|---|
AWS IAM (root ユーザ) | MFA 認証の設定 | MUST |
アクセスキーの削除 | MUST | |
AWS IAM | IAM パスワードポリシーの設定 | MUST |
IAM ユーザの作成 | MUST | |
MFA 認証の設定 | MUST | |
アカウントエイリアスの作成 | MAY | |
AWS IAM Access Analyzer | 有効化(アナライザーの作成) | SHOULD |
マネジメントコンソール | IP アドレス制限 | MAY |
Amazon GuardDuty | 有効化 | SHOULD |
S3 保護の有効化 | SHOULD | |
信頼されている/驚異 IP リストの作成 | MAY | |
通知設定 | MAY | |
S3 エクスポート設定 | MAY | |
AWS Security Hub | 有効化 | SHOULD |
通知設定 | MAY | |
Amazon Detective | 有効化 | SHOULD |
Amazon VPC | VPC フローログの有効化 | SHOULD |
デフォルト VPC の削除 | MAY | |
Amazon EC2 (EBS) | EBS のデフォルト暗号化設定 | MAY |
Amazon S3 | アカウントのブロックパブリックアクセス設定 | MAY |
契約・コスト
サービス名 | 内容 | レベル |
---|---|---|
マイアカウント | お支払い通貨の設定 | SHOULD |
秘密の質問の設定 | SHOULD | |
代替の連絡先の設定 | MAY | |
デフォルト無効リージョンの確認 | INFO | |
AWS Artifact | 準拠法を日本法に変更 | MAY |
AWS サポート | 必要なサポートに加入 | MAY |
AWS Cost Explorer | 有効化 | SHOULD |
時間単位とリソースレベルのデータを有効化 | MAY | |
サイズの適正化に関する推奨事項を有効化 | SHOULD | |
AWS Compute Optimizer | 有効化 | SHOULD |
AWS Cost Anomaly Detection | 有効化(モニターとサブスクリプション設定) | SHOULD |
Budgets | 予算アラートの設定 | SHOULD |
予算レポートの設定 | MAY | |
請求コンソール (Billing) | Cost and Usage Reports の有効化 | MAY |
コスト配分タグの設定 | MAY | |
PDF 請求書の設定 | MAY | |
無料利用枠の使用アラートの設定 | MAY | |
請求アラートの設定 | INFO | |
マイアカウント | IAM ユーザによる請求情報へのアクセス設定 | MAY |
その他
カテゴリ | 内容 | レベル |
---|---|---|
リソース命名規則 | 大まかな命名規則の決定 | SHOULD |
辞書登録 | よく使う AWS 単語の辞書登録 | INFO |
ログ・モニタリングのやるべきこと
AWS CloudTrail の設定
CloudTrail は AWS リソースを「誰が」「いつ」「何に」対して「どうような」操作をしたのかを記録するサービスです。 ログの長期保管の設定をしておくことで、トラブル発生時の解析等に利用できます。 有料です(無料利用枠もあります)
[YouTube] AWS CloudTrailを触ってみた
CloudTrail Insights を利用することで、機械学習により異常なアクティビティを検出することもできます。
ログは S3 と CloudWatch Logs に転送でき、S3 に保管しているログは Athena により検索することもできます。 Athena を利用する場合は、事前に CloudTrail 用のテーブルを作成しておき、検索方法を習熟しておきましょう。 インシデントが発生してから習熟では対応が遅くなります。
[AWS]CloudTrailの証跡ログをAthenaを使ってサクッと解析する[このリソース誰が作ったの?]
マネジメントコンソールのサインイン通知
EventBridge サービスを利用することで、CloudTrail のイベント契機でアクションを設定することができます。 始めに設定しておいた方がよい内容として、IAM ユーザのマネジメントコンソールへのサインイン通知があります。 通知により、IAM ユーザの不正利用に早く気づくことができます。
AWSマネジメントコンソールのサインインをメールで通知する方法
AWS Config の有効化
AWS Config は、AWS リソースの変更の追跡を行うことができるサービスです。 リソースの変更履歴をタイムラインとして表示することもできるため、インシデント発生時の調査等に役立ちます。 有料です。
AWS リソースの設定内容が基準を満たすかどうかを評価する Config ルールの利用も合わせて検討します。 Config ルールには AWS が提供しているマネージドルールもあります。
Amazon DevOps Guru の有効化
機械学習により運用パターンから逸脱したアプリケーション動作を検出するサービスです。 ウェブアプリケーションのレイテンシー急上昇やディスクスペースの不足などを検出してくれます。 有料です。
【簡単導入】機械学習で運用を効率化!Amazon DevOps Guruを有効化してみた
Amazon S3 Storage Lens の有効化
S3 の使用状況とアクティビティの傾向を可視化し、コストやデータ保護に関する推奨事項を提案してくれるサービスです。 S3 の利用状況を分析するために役立ちます。 基本メトリクスは無料ですが、高度なメトリクスとレコメンデーション機能は有料となります。
[新機能] S3 の利用状況が一目瞭然!しかも無料!「Amazon S3 Storage Lens」がリリースされました!
AWS Personal Health Dashboard の通知設定
作成したリソースが障害やメンテナンスの影響を受けているか確認できるサービスです。 イベント発生を通知することができます。
MonitoringAWS HealthAmazon CloudWatch Events
AWS Trusted Advisor の通知設定
「コスト最適化」「パフォーマンス」「セキュリティ」「対障害性」「サービスの制限」に関してAWSの推奨事項をアドバイスしてくれるサービスです。 推奨事項はメールで通知する設定ができます。 無料で利用できますが、すべてのチェック項目を利用するためにはビジネスサポート以上が必要となります。
セキュリティのやるべきこと
root ユーザの設定
root ユーザは AWS アカウント作成に使用したメールアドレスとパスワードを利用するユーザです。 root ユーザは強い権限を持つため、普段の作業では利用せず、サポート契約などの root ユーザにしかできない作業を行うときのみ利用するようにします。
不正利用防止のため、MFA 認証の設定とアクセスキーの削除を行います。
IAMのベストプラクティス!rootユーザのアクセスキーはできるだけ削除していきましょう
IAM ユーザ/IAM グループの作成
IAM ユーザは AWS 内で定義されるユーザ情報です。 始めにパスワードポリシーの設定を行い、IAM ユーザを作成します。 IAM ユーザを作成する際は、合わせて IAM グループを作成し、IAM グループに対して IAM ポリシーを割り当てるようにします。
IAM ユーザは利用者毎に作成し、MFA 認証を設定するようにします。 MFA 認証は基本的には設定したほうが良いですが、後述するマネジメントコンソールへの IP アドレス制限を行う場合は、利便性とのバランスを考慮して利用有無を検討してもよいかもしれません。
アカウントエイリアスの作成
IAM ユーザでマネジメントコンソールにサインインするときには、12 桁の AWS アカウント ID も入力する必要があります。 このアカウント ID の代わりに任意の文字列のエイリアスを設定することができます。
IAM Access Analyzer
外部エンティティ(外部 AWS アカウントや IdP 等)に対するアクセス許可状況を確認できるサービスです。 意図していない権限を外部エンティティに対して付与していないかどうか確認できます。 利用するリージョン毎に有効化する必要があります。
マネジメントコンソールサインインの IP アドレス制限
IAM ロールを利用することで、マネジメントコンソールへサインインできる送信元 IP アドレスを制限することができます。 設定内容はやや複雑なので、設定方法を紹介しているブログをご参照ください。
[AWS]マネージメントコンソールにIP制限をしつつ、一部利用できない機能も利用できるようにする
Amazon GuardDuty の有効化
AWS 環境を継続的にモニタリングして、セキュリティに関する異常を検出してくれるサービスです。 利用するリージョン毎に有効化する必要があります。 有料です。
[2021年版]Amazon GuardDutyによるAWSセキュリティ運用を考える
利用する際には、信頼されている IP アドレスと驚異となる IP アドレスを事前に登録しておくことで精度が向上します。 また、S3 保護機能を有効化することで、S3 に関する異常も検出してくれるようになります。
セキュリティイベントを通知することもできます。
GuardDutyからのイベント通知をちょっと見やすくして通知する
GuardDuty で検討すべき設定として、更新された検出結果の頻度の変更と S3 バケットへのエクスポート設定があります。 更新された検出結果の頻度を 15 分に変更することで、イベントに更新があった場合の再通知を早めることができるメリットがあります。
AWS Security Hub の有効化
セキュリティサービスの検知結果の一元管理とセキュリティ基準(Security Standard)に基づいたリスクの評価ができるサービスです。 GuardDuty 同様に、利用するリージョン毎に有効化する必要があります。 有料です。
[入門]社内勉強会で AWS Security Hubの話をしました
セキュリティ基準機能では、AWS 環境がセキュリティ基準を満たしているかを評価し、セキュリティスコアとして表示してくれます。 評価結果の対処もしくは無効化を行うことで、スコア 100 %を目指します。
うわっ…私のセキュリティスコア低すぎ…?Security HubのCISベンチマークの俺流チューニングで100%準拠を目指す
セキュリティイベントを通知することもできます。
Security Hub イベントを見やすく加工して Eメール通知してみる
Amazon Detective の有効化
セキュリティイベントの調査を容易にするサービスです。 GuardDuty 同様に、利用するリージョン毎に有効化する必要があります。 有料です。
2021年10月12日時点で大阪リージョンでは未提供です
Detective は GuardDuty と連携しており、GuardDuty で検出したイベントを Detective で調査することができます。
[神ツール]セキュリティインシデントの調査が捗るAmazon DetectiveがGAしたのでメリットとオススメの使い方を紹介します
VPC フローログ有効化とデフォルト VPC 削除
VPC のトラフィック情報をログに残すために VPC フローログを有効化します。
アカウント開設直後では、各リージョンにデフォルト VPC が 1 個ずつ存在します。 自身で VPC を作成する場合は、デフォルト VPC は不要なので削除します。 また、利用していないリージョンにおいてもデフォルト VPC は不要なリソースとなるので削除します。
デフォルト VPC のサブネット設定では、パブリック IPv4 アドレスの自動割り当て設定が有効であるため、削除することで意図しないインターネット公開の可能性を少しでも減らすことができます。
Amazon EC2 (EBS) のデフォルト暗号化設定
EBS ボリュームの暗号化は、デフォルトでは「無効」の設定になっています(作成時に暗号化を有効にすることはできます)。 暗号化設定のデフォルトを「有効」にすることができます。 セキュリティ要件において、Disk の暗号化が必須の場合は、有効化漏れを防ぐためにもデフォルトを「有効」の設定に変更します。
Amazon S3 のブロックパブリックアクセス設定
アカウント内の S3 のインターネット公開をブロックする「アカウントのブロックパブリックアクセス設定」があります。 S3 をインターネットに公開する予定がないアカウントでは、意図しないインターネット公開を防ぐためにブロック設定を行います。
契約・コストのやるべきこと
マイアカウントの設定
希望の支払い通貨に変更します。日本円に変更することもできます。
秘密の質問の設定を行います。 秘密の質問は AWS カスタマーサービスが AWS アカウントの所有者であることを確認するために利用されることがあるようです。 一度、設定すると削除はできませんが、変更はできます。
代替の連絡先を設定できます。 AWS からの連絡先として、root ユーザのメールアドレス以外の連絡先を追加できます。 必要に応じて、「請求」「オペレーション」「セキュリティ」の連絡先タイプごとに設定します。
デフォルトで無効になっているリージョンを確認し、利用する場合は有効化のアクションを行います。
準拠法の契約変更
2022.4.12 追記
追記時点の AWS カスタマーアグリーメントでは、AWS契約当事者が「Amazon Web Services Japan Godo Kaisha」の場合は、準拠法は日本国法、管轄裁判所は東京地裁と定められており、本ブログの内容は古い情報となっていますのでご注意ください
アカウント開設直後は、AWS カスタマーアグリメントの準拠法は米国ワシントン州法です。 必要に応じて、準拠法を日本法に変更する契約変更を締結できます。
AWS サポートへの加入
要件に応じて、AWS のサポートに加入します。 サポートはプランにより料金が変わります。
AWS Cost Explorer の設定
実績と予測のコストを可視化してくれるサービスです。 Cost Explorer API の利用や一部のオプション機能は有料となります。
次の 2 点の設定変更を検討します。
- 時間単位とリソースレベルのデータ
- 言葉通りの意味ですが、コストを時間単位で表示したり、リソース別に表示したりできるようになります
- 追加料金が発生します
- サイズの適正化に関する推奨事項を受け取る
- CPU 使用率等のメトリクス情報を基に EC2 インスタンスにおける推奨インスタンスタイプを提示してくれるようになります
- 追加料金は発生しません
AWS Compute Optimizer の有効化
コストとパフォーマンスの観点で最適な Compute リソースを提案してくれるサービスです。 EC2 / EBS / Auto Scaling Group / Lambda に対応しています。
[アップデート] AWS Compute Optimizerが東京リージョンに対応しました!
AWS Cost Anomaly Detection の有効化
機械学習によりコストの異常を検出してくれるサービスです。 検出した異常を通知する設定ができ、通知によりコスト異常に早く気づくことができます。
正式リリースされた「AWS Cost Anomaly Detection」を利用して、EC2 Mac インスタンスの課金を検出させてみた
Budgets の設定
予算の管理を行うサービスです。 設定した実績 / 予測コストのしきい値でアラート送信ができます。
定期的(日次、週次など)に予算に対する実績 / 予測コストのレポートをメールで受け取ることもできます。 注意点として予測コストが利用できるようになるまで、約 5 週間必要となります。
Cost and Usage Reports の有効化
日本語では「AWS のコストと使用状況レポート」です。 コストに関する詳細情報を CSV 形式(GZIP 圧縮)で S3 に保管してくれます。 S3 に保存したレポートは、Athena や BI ツールを利用して分析できます。
コスト配分タグを利用することで、レポートにタグ情報を追加することもできます。 タグ情報があることにより分析の幅が広がります。
請求コンソール (Billing) の設定
「E メールで PDF 版請求書を受け取る」設定と「無料利用枠の使用アラートを受信する」設定を有効化するかどうか検討します。 「請求アラートを受け取る」設定もありますが、Budgets 機能で代替可能なので、無理に有効化する必要はありません。
IAM ユーザによる請求情報へのアクセス設定
これまで説明した CostExplorer などの請求・コストに関するサービスの中には、root ユーザにしか権限がないサービスがあります。 IAM ユーザに対してもアクセス権を与える設定がありますので、必要に応じてマイアカウント画面から設定します。
その他
大まかなリソース命名規則の決定
始めから詳細なリソース命名規則を決めることは難しいですが、大まかに決めておくことをおすすめします。 「要素」と「順番」だけ考慮して、ハイフンで区切るだけで、大まかな命名規則を決めることができます。
「要素」としては、システム名、環境(prod, stg, dev)、サービス名、リージョン名、ユーザ名/チーム名/組織名、などがあり、要素毎に必要かどうかを精査します。 「順番」はアクセス制御のしやすさやソートのしやすさを考慮して決定します。
決め方の例は資料をご参照ください。 参考として、弊社内で利用されている命名規則の一例を紹介したブログもございます。
辞書登録
よく使う AWS 単語を IME の辞書に登録しておくと便利です。
- まいあかうんと → 111122223333
- とうきょうりーじょん → ap-northeast-1 など
まとめ
AWS で最初にやるべきことについて「ログ・モニタリング」「セキュリティ」「契約・コスト」の観点で紹介しました。
ぜひご活用ください!